#!/bin/sh -efu
#
# Make dependencies on directories under which files are packaged.
#
# @RPMCONFIGDIR@/*-files.req.list file format:
# 1) Meaningful lines start with slash '/'.
# 2a) Each line must contain either one field: '<dir>';
# 2b) or two fields: '<dir> <pkg>'.
# In <dir>, trailing slash is ok.
#
# Whenever file path matches <dir> (that is, a file or directory
# is packaged under <dir>), this program prints explicit dependency
# on <dir>.  If file path matches a few directories, the longest-matching
# <dir> is printed.  Optional <pkg> name indicates that <dir> itself
# should be exclusively owned by <pkg>.
#
# Copyright (C) 2003  Dmitry V. Levin <ldv@altlinux.org>
# Copyright (C) 2008  Alexey Tourbin <at@altlinux.org>
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.

. @RPMCONFIGDIR@/functions

# reverse sort provides longest match
dirlist=$(set +f; grep -h ^/. @RPMCONFIGDIR@/*-files.req.list |sort -ur)

FilesReq()
{
	local f="$1"; shift
	echo "${dirlist:?}" |
	while read -r d pkg; do
		d=${d%/}
		case "$f" in
			"${RPM_BUILD_ROOT-}$d"/*)
				echo "$d"
				break ;;
			"${RPM_BUILD_ROOT-}$d")
				[ -z "${pkg-}" -o -z "${RPM_SUBPACKAGE_NAME-}" ] ||
					[ "$pkg" = "$RPM_SUBPACKAGE_NAME" ] ||
					Warning "$f: directory belongs to $pkg"
				break ;;
		esac
	done
}

ArgvFileAction FilesReq "$@"
